// pages/email/email.js
const db=wx.cloud.database();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    list:[],
    value:'',
    name:'',
    id:'',
    top:0

  },
  input(e){
    this.setData({
      value:e.detail.value
    })
  },
  submit(){
    db.collection("email").where({
      _openid:getApp().globalData.openid,
      guestid:this.data.id
    }).update({
      data:{
        list:db.command.push({
          info:this.data.value,
          time: new Date()
        })
      }
    }).then(res=>{
      console.log("信息上传数据库成功！");
      this.setData({
        value:''
      })
    })
  },
  formatCurrentTime(time) {
    const date=new Date(time);
    const year = date.getFullYear(); // 年（4位）
    const month = (date.getMonth() + 1).toString().padStart(2, '0'); // 月（补零）
    const day = date.getDate().toString().padStart(2, '0'); // 日（补零）
    const hour = date.getHours().toString().padStart(2, '0'); // 时（补零）
    const minute = date.getMinutes().toString().padStart(2, '0'); // 分（补零）
    const second = date.getSeconds().toString().padStart(2, '0'); // 秒（补零）
  
    // 按需返回格式，例如：2024-05-20 14:30:00
    return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
  },
  watch(){
   this.watch_1= db.collection("email").where({
      _openid:getApp().globalData.openid,
      guestid:this.data.id
    }).watch({
      onChange:(snapshot)=>{
        if(snapshot.type=="init"){
          console.log("我的监听开启!");
        }else{
        let length=snapshot.docChanges[0].doc.list.length;
        snapshot.docChanges[0].doc.list[length-1].type="my";
        let temp_1=snapshot.docChanges[0].doc.list[length-1];
        temp_1.time=this.formatCurrentTime(temp_1.time);
        this.setData({
          list:[...this.data.list,temp_1],
          top:999999
        });
        console.log("我有数据更新！");
      }
      },
      onError: (err) => {
        console.error('监听失败：', err);
      }
    })
  this.watch_2 = db.collection("email").where({
      _openid:this.data.id,
      guestid:getApp().globalData.openid
    }).watch({
      onChange:(snapshot)=>{
        if (snapshot.type=="init") {
          console.log("对方监听开启！");
        }else{
        let length=snapshot.docChanges[0].doc.list.length;
        snapshot.docChanges[0].doc.list[length-1].type="your";
        let temp_2=snapshot.docChanges[0].doc.list[length-1];
        temp_2.time=this.formatCurrentTime(temp_2.time);
        this.setData({
          list:[...this.data.list,temp_2],
          top:999999
        });
        console.log("对方有数据更新！");
      }
      },
      onError: (err) => {
        console.error('监听失败：', err);
      }
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad:async function(options) {
    let mylist=[];
    this.setData({
      name:options.name,
      id:options.id
    });
   const qur_1=db.collection("email").where({
      _openid:getApp().globalData.openid,
      guestid:options.id
    }).get().then(res=>{
      if(res.data.length!=0){
         res.data[0].list.forEach(item =>{
          item.type="my";
        });
      mylist.push(...res.data[0].list);
      console.log("我的信息获取成功");
      }else{
        console.log("消息表不存在！");
     return db.collection("email").add({
        data:{
        guestid:options.id,
        createtime:new Date(),
        list:[]
        }
      }).then(res=>{
        console.log("消息表创建成功！")
      });
      }
    }).catch(err=>{
      console.error("查询错误详情：", err);
    })

  const qur_2= db.collection("email").where({
      guestid:getApp().globalData.openid,
      _openid:options.id
    }).get().then(res=>{
      if(res.data.length!=0){
        res.data[0].list.forEach(item =>{
          item.type="your";
        });
      mylist.push(...res.data[0].list);
      console.log("对方信息获取成功");
      }else{
        console.log("对方信息表不存在！");
      }
    }).catch(err=>{
      console.error("查询错误详情：",err);
    });
   await Promise.all([qur_1,qur_2]);
    mylist.sort((a, b) => {
      const timeA = new Date(a.time).getTime(); // 转换为时间戳
      const timeB = new Date(b.time).getTime();
      return timeA - timeB; // 升序
    });
    for(let i=0;i<mylist.length;i++)
    {
      mylist[i].time=this.formatCurrentTime(mylist[i].time);
    }
    this.setData({
      list:mylist,
      top:999999
    });
    this.watch();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
      this.watch_1.close();
      this.watch_2.close();
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})